"""
# 题目信息
资源限制
内存限制：512.0MB   C/C++时间限制：1.0s   Java时间限制：3.0s   Python时间限制：5.0s
问题描述
　　十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号，
    分别表示十进制数的0至15。十六进制的计数方法是满16进1，所以十进制数16在十六进制中是10，而十进制的17在十六进制中是11，
    以此类推，十进制的30在十六进制中是1E。
　　给出一个非负整数，将它表示成十六进制的形式。
输入格式
　　输入包含一个非负整数a，表示要转换的数。0<=a<=2147483647
输出格式
　　输出这个整数的16进制表示
样例输入
30
样例输出
1E
"""
"""
# 分析
1. 进制转换，就是除以多少进制，直到不能除了为止，例如十进制的30转十六进制，就是30除以16得1余14
2. 在python中可以用 //表示取整 ，%表示取余。同时也可以使divmod(x,y)函数,结果相当于数组
"""
# 方法一：
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F']
b = int(input())
c = divmod(b, 16)
print(str(int(a[c[0]-1])) + str(a[c[1]-1]))

# 方法二：
a = int(input())
d = []  # 余数的列表
if a // 16 <= 16:
    b = a // 16
    b = hex(b)[2:].upper()
    c = a % 16
    c = hex(c)[2:].upper()
    print(b + c)
else:
    b = a // 16
    i = 0
    while b > 16:
        c = a % 16
        c = hex(c)[2:].upper()
        d.insert(0, c)
        b = a // 16
        a = b
        i += 1
    b = hex(b)[2:].upper()
    d.insert(0, b)
    print(''.join(str(x) for x in d))
'''
对是对了，但很尴尬，前三道题错了
'''
# 方法三：
a = int(input())
if 0 <= a <= 2147483647:
    print(hex(a)[2::].upper())
'''
# 收获
1. 巩固了关系推导式，for x in y 
2. 加深了join函数的使用
3. 学习了解了divmod函数，以及元组的相关知识
4. 加深了if...else语句的理解
5. 深入学习了有关于进制转换的相关理解
6. 加深理解了append()函数，在最后添加元素，insert()函数，在任意位置添加函数，
upper()函数，字母大写函数
'''